
/*
'===============================================================================
'  Generated From - BLL_Component_Partial_Core.vbgen
'  
'  This object is partial class component representing a table in a database. It
'  contains core data access methods. Other partial classes should be used for 
'  implementing custom business logic. This class can be regenerated many times.
'  
'  Do not write custom business logic in this class as it will be overwritten 
'  next time the class is generated.
'
'  Version: 1.0
'  Date:	30/01/06
'  Summary: SelectOne, SelectAll, SelectAllWForeignKey, Insert, Update, Delete,
'  			DeleteAllWForeignKey, class for sorting.
'===============================================================================
*/
using System;
using System.Data;
using System.Collections.Generic;

namespace PlacementManager
{
    public partial class CategoryDetailComponent
    {
        
		/// <summary>
        /// Default constructor.
        /// </summary>
		public CategoryDetailComponent()
        {

        }
		
		/// <summary>
        /// Selects one record from the database table using the primary key.
        /// </summary>
        /// <returns>An object of a type representing a row in the database table.</returns>
		public CategoryDetail SelectOne(int CategoryDetailId)
        {  
			PlacementManager.DAL.CategoryDetail_DAL o = new PlacementManager.DAL.CategoryDetail_DAL();
			o.CategoryDetailId = CategoryDetailId;
			DataTable dt = o.SelectOne().Tables[0];
			
			if (dt.Rows.Count > 0)
            {
                DataRow row = dt.Rows[0];
				PlacementManager.CategoryDetail CategoryDetailToReturn = new PlacementManager.CategoryDetail((int)row["CategoryDetailId"], (string)row["CategoryName"], (DateTime)row["DateCreated"], (string)row["CreatedBy"], (DateTime)row["DateUpdated"], (string)row["UpdatedBy"]);
				return CategoryDetailToReturn;
			}
			else
			{
				PlacementManager.CategoryDetail CategoryDetailToReturnEmpty = new PlacementManager.CategoryDetail();
                return CategoryDetailToReturnEmpty;
			}
        }
		
		/// <summary>
        /// Selects all records from the database table.
        /// </summary>
        /// <returns>A collection of objects of a type representing a row in the database table.</returns>
		public List<CategoryDetail> SelectAll(string sortExpression)
        {
            List<CategoryDetail> listCategoryDetail = new List<CategoryDetail>();
            PlacementManager.DAL.CategoryDetail_DAL o = new PlacementManager.DAL.CategoryDetail_DAL();

            DataSet ds = o.SelectAll();

            foreach (DataRow row in ds.Tables[0].Rows)
            {
                listCategoryDetail.Add(new CategoryDetail((int)row["CategoryDetailId"], (string)row["CategoryName"], (DateTime)row["DateCreated"], (string)row["CreatedBy"], (DateTime)row["DateUpdated"], (string)row["UpdatedBy"]));
            }

            listCategoryDetail.Sort(new CategoryDetailComparer(sortExpression));
            return listCategoryDetail;
        }
	
		/// <summary>
        /// Selects all records from the database table based on a foreign key.
        /// </summary>
        /// <returns>A collection of objects of a type representing a row in the database table.</returns>


		/// <summary>
        /// Inserts a new row into the datatable.
        /// </summary>
        /// <param name="o">An object of a datatype representing a row in the database table.</param>
        /// <returns>Boolean</returns>
		public int Insert(CategoryDetail o)
        {	
            PlacementManager.DAL.CategoryDetail_DAL oCategoryDetail = new PlacementManager.DAL.CategoryDetail_DAL();
			oCategoryDetail.CategoryName = o.CategoryName;
			oCategoryDetail.DateCreated = o.DateCreated;
			oCategoryDetail.CreatedBy = o.CreatedBy;
			oCategoryDetail.DateUpdated = o.DateUpdated;
			oCategoryDetail.UpdatedBy = o.UpdatedBy;

            return oCategoryDetail.Insert();
        }
		
		/// <summary>
        /// Inserts a new row into the datatable by passing parameters represneting each column.
        /// </summary>
        /// <returns>Boolean</returns>
		public int Insert(string CategoryName, DateTime DateCreated, string CreatedBy, DateTime DateUpdated, string UpdatedBy)
        {
            PlacementManager.DAL.CategoryDetail_DAL oCategoryDetail = new PlacementManager.DAL.CategoryDetail_DAL();

			oCategoryDetail.CategoryName = CategoryName;
			oCategoryDetail.DateCreated = DateCreated;
			oCategoryDetail.CreatedBy = CreatedBy;
			oCategoryDetail.DateUpdated = DateUpdated;
			oCategoryDetail.UpdatedBy = UpdatedBy;

            return oCategoryDetail.Insert();
        }

		/// <summary>
        /// Updates a row in the database table based on the primary key.
        /// </summary>
        /// <param name="o">An object of a datatype representing a row in the database table.</param>
        /// <returns>Boolean</returns>
		public bool Update(CategoryDetail o)
        {	
            PlacementManager.DAL.CategoryDetail_DAL oCategoryDetail = new PlacementManager.DAL.CategoryDetail_DAL();
			oCategoryDetail.CategoryDetailId = o.CategoryDetailId;
			oCategoryDetail.CategoryName = o.CategoryName;
			oCategoryDetail.DateCreated = o.DateCreated;
			oCategoryDetail.CreatedBy = o.CreatedBy;
			oCategoryDetail.DateUpdated = o.DateUpdated;
			oCategoryDetail.UpdatedBy = o.UpdatedBy;

            return oCategoryDetail.Update();
        }
		
		/// <summary>
        /// Updates a row in the database table based on the primary key by passing the values of each column as parameters.
        /// </summary>
        /// <returns>Boolean</returns>
		public bool Update(int CategoryDetailId, string CategoryName, DateTime DateCreated, string CreatedBy, DateTime DateUpdated, string UpdatedBy)
        {
            PlacementManager.DAL.CategoryDetail_DAL oCategoryDetail = new PlacementManager.DAL.CategoryDetail_DAL();

			oCategoryDetail.CategoryDetailId = CategoryDetailId;
			oCategoryDetail.CategoryName = CategoryName;
			oCategoryDetail.DateCreated = DateCreated;
			oCategoryDetail.CreatedBy = CreatedBy;
			oCategoryDetail.DateUpdated = DateUpdated;
			oCategoryDetail.UpdatedBy = UpdatedBy;

            return oCategoryDetail.Update();
        }
		
		/// <summary>
        /// Deletes one row in the database table.
        /// </summary>
        /// <param name="o">An object of a datatype representing a row in the database table.</param>
        /// <returns>Boolean</returns>
		public bool Delete(CategoryDetail o)
        {
            PlacementManager.DAL.CategoryDetail_DAL oCategoryDetail_DAL = new PlacementManager.DAL.CategoryDetail_DAL();
            oCategoryDetail_DAL.CategoryDetailId = o.CategoryDetailId;
            return oCategoryDetail_DAL.Delete();
        }
		
		/// <summary>
        /// Deletes one row in the database table by passing the primary key.
        /// </summary>
        /// <returns>Boolean</returns>
		public bool Delete(int CategoryDetailId)
        {
            PlacementManager.DAL.CategoryDetail_DAL oCategoryDetail_DAL = new PlacementManager.DAL.CategoryDetail_DAL();
            oCategoryDetail_DAL.CategoryDetailId = CategoryDetailId;
            return oCategoryDetail_DAL.Delete();
        }
		
		/// <summary>
		/// Deletes all rows in a table based on a foreign key.
		/// </summary>
		/// <returns>Boolean</returns>

	}
	
	public class CategoryDetailComparer : IComparer<CategoryDetail>
    {
        private string _sortColumn;
        private bool _reverse;

        public CategoryDetailComparer(string sortExpression)
        {
            _reverse = sortExpression.ToLowerInvariant().EndsWith(" desc");
            if (_reverse)
            {
                _sortColumn = sortExpression.Substring(0, sortExpression.Length - 5);
            }
            else
            {
                _sortColumn = sortExpression;
            }
        }

        public int Compare(CategoryDetail a, CategoryDetail b)
        {
            int retVal = 0;
            switch (_sortColumn)
            {
				case "CategoryDetailId":
					retVal = String.Compare(a.CategoryDetailId.ToString(), b.CategoryDetailId.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "CategoryName":
					retVal = String.Compare(a.CategoryName.ToString(), b.CategoryName.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "DateCreated":
					retVal = String.Compare(a.DateCreated.ToString(), b.DateCreated.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "CreatedBy":
					retVal = String.Compare(a.CreatedBy.ToString(), b.CreatedBy.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "DateUpdated":
					retVal = String.Compare(a.DateUpdated.ToString(), b.DateUpdated.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;
				case "UpdatedBy":
					retVal = String.Compare(a.UpdatedBy.ToString(), b.UpdatedBy.ToString(), StringComparison.InvariantCultureIgnoreCase);
					break;

            }
            return (retVal * (_reverse ? -1 : 1));
        }
    }
}
